table of contents
GIT-WHATCHANGED(1) | Git Manual | GIT-WHATCHANGED(1) |
NAME¶
git-whatchanged - Show logs with difference each commit introduces
SYNOPSIS¶
git whatchanged <option>...
DESCRIPTION¶
Shows commit logs and diff output each commit introduces. The command internally invokes git rev-list piped to git diff-tree, and takes command line options for both of these commands.
This manual page describes only the most frequently used options.
OPTIONS¶
-p
-<n>
<since>..<until>
-r
-m
However, it is not very useful in general, although it is useful on a file-by-file basis.
--pretty[=<format>], --format[=<format>]
Note: you can specify the default pretty format in the repository configuration (see git-config(1)).
--abbrev-commit
This should make "--pretty=oneline" a whole lot more readable for people using 80-column terminals.
--oneline
--encoding[=<encoding>]
--no-notes, --show-notes[=<ref>]
With an optional argument, add this ref to the list of notes. The ref is taken to be in refs/notes/ if it is not qualified.
--[no-]standard-notes
PRETTY FORMATS¶
If the commit is a merge, and if the pretty-format is not oneline, email or raw, an additional line is inserted before the Author: line. This line begins with "Merge: " and the sha1s of ancestral commits are printed, separated by spaces. Note that the listed commits may not necessarily be the list of the direct parent commits if you have limited your view of history: for example, if you are only interested in changes related to a certain directory or file.
Here are some additional details for each format:
<sha1> <title line>
This is designed to be as compact as possible.
commit <sha1> Author: <author>
<title line>
commit <sha1> Author: <author> Date: <author date>
<title line>
<full commit message>
commit <sha1> Author: <author> Commit: <committer>
<title line>
<full commit message>
commit <sha1> Author: <author> AuthorDate: <author date> Commit: <committer> CommitDate: <committer date>
<title line>
<full commit message>
From <sha1> <date> From: <author> Date: <author date> Subject: [PATCH] <title line>
<full commit message>
The raw format shows the entire commit exactly as stored in the commit object. Notably, the SHA1s are displayed in full, regardless of whether --abbrev or --no-abbrev are used, and parents information show the true parent commits, without taking grafts nor history simplification into account.
The format: format allows you to specify which information you want to show. It works a little bit like printf format, with the notable exception that you get a newline with %n instead of \n.
E.g, format:"The author of %h was %an, %ar%nThe title was >>%s<<%n" would show something like this:
The author of fe6e0ee was Junio C Hamano, 23 hours ago The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<
The placeholders are:
Note
Some placeholders may depend on other options given to the revision traversal engine. For example, the %g* reflog options will insert an empty string unless we are traversing reflog entries (e.g., by git log -g). The %d placeholder will use the "short" decoration format if --decorate was not already provided on the command line.
If you add a + (plus sign) after % of a placeholder, a line-feed is inserted immediately before the expansion if and only if the placeholder expands to a non-empty string.
If you add a - (minus sign) after % of a placeholder, line-feeds that immediately precede the expansion are deleted if and only if the placeholder expands to an empty string.
The tformat: format works exactly like format:, except that it provides "terminator" semantics instead of "separator" semantics. In other words, each commit has the message terminator character (usually a newline) appended, rather than a separator placed between entries. This means that the final entry of a single-line format will be properly terminated with a new line, just as the "oneline" format does. For example:
$ git log -2 --pretty=format:%h 4da45bef \
| perl -pe ´$_ .= " -- NO NEWLINE\n" unless /\n/´ 4da45be 7134973 -- NO NEWLINE $ git log -2 --pretty=tformat:%h 4da45bef \
| perl -pe ´$_ .= " -- NO NEWLINE\n" unless /\n/´ 4da45be 7134973
In addition, any unrecognized string that has a % in it is interpreted as if it has tformat: in front of it. For example, these two are equivalent:
$ git log -2 --pretty=tformat:%h 4da45bef $ git log -2 --pretty=%h 4da45bef
EXAMPLES¶
git whatchanged -p v2.6.12.. include/scsi drivers/scsi
git whatchanged --since="2 weeks ago" -- gitk
AUTHOR¶
Written by Linus Torvalds <torvalds@osdl.org[1]> and Junio C Hamano <gitster@pobox.com[2]>
DOCUMENTATION¶
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org[3]>.
GIT¶
Part of the git(1) suite
NOTES¶
- 1.
- torvalds@osdl.org
- 2.
- gitster@pobox.com
- 3.
- git@vger.kernel.org
02/03/2020 | Git 1.7.1 |